Asynchronous Programming (Async/Await)

Web Development - এএসপি ডট (ASP.Net) - অ্যাডভান্সড পারফরম্যান্স টিউনিং |

Asynchronous Programming ASP.Net এ ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে এবং অ্যাপ্লিকেশনের কর্মক্ষমতা বাড়াতে গুরুত্বপূর্ণ একটি বৈশিষ্ট্য। Async এবং Await হল দুটি প্রধান কীওয়ার্ড যা C# ভাষায় অ্যাসিঙ্ক্রোনাস প্রোগ্রামিংয়ের জন্য ব্যবহৃত হয়। অ্যাসিঙ্ক্রোনাস প্রোগ্রামিংয়ের মাধ্যমে, আপনার অ্যাপ্লিকেশন একাধিক কাজ একসাথে সম্পাদন করতে সক্ষম হয়, যার ফলে ওয়েব অ্যাপ্লিকেশন দ্রুত রেসপন্স দেয় এবং সার্ভারের উপর কম চাপ পড়ে।

১. Asynchronous Programming কী?

Asynchronous programming এমন একটি প্রোগ্রামিং প্যাটার্ন যেখানে কাজগুলো একসাথে, একে অপরের অপেক্ষা না করে চলতে থাকে। এর মানে হলো, আপনি একটি কাজ শুরু করতে পারেন এবং সেই কাজটি সম্পন্ন না হওয়া পর্যন্ত অন্য কাজ করতে পারেন। এটি বিশেষভাবে I/O (Input/Output) ভিত্তিক অপারেশন যেমন ডেটাবেস কুয়েরি, ফাইল রিড/রাইট এবং নেটওয়ার্ক রিকোয়েস্টের জন্য উপকারী।


২. Async এবং Await কী?

Async এবং Await দুটি মূল কিওয়ার্ড যা C#-এ অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং বাস্তবায়নে ব্যবহৃত হয়:

  • async: একটি মেথডকে অ্যাসিঙ্ক্রোনাস হিসেবে চিহ্নিত করতে async কিওয়ার্ড ব্যবহার করা হয়। এটি সেই মেথডের ভিতরে await কিওয়ার্ড ব্যবহার করতে সক্ষম করে।
  • await: await কিওয়ার্ড একটি অ্যাসিঙ্ক্রোনাস অপারেশনের সাথে যুক্ত করা হয়, যা চলমান অপারেশনটির সমাপ্তি না হওয়া পর্যন্ত পরবর্তী কোড এক্সিকিউট হতে দেয় না।

৩. ASP.Net Core অ্যাপ্লিকেশনে Async/Await ব্যবহার করা

ASP.Net Core অ্যাপ্লিকেশনগুলিতে Async এবং Await ব্যবহারের মাধ্যমে আপনি ডাটাবেস কুয়েরি, ফাইল সিস্টেম অপারেশন, HTTP রিকোয়েস্ট, এবং আরও অনেক I/O ভিত্তিক কাজ সহজেই পরিচালনা করতে পারেন।

৩.১. Async মেথড তৈরি করা

একটি অ্যাসিঙ্ক্রোনাস মেথড তৈরি করতে, আপনি async কিওয়ার্ড ব্যবহার করবেন এবং অপারেশনটি সম্পন্ন হওয়া পর্যন্ত Task বা Task টাইপ রিটার্ন করবেন।

উদাহরণ:
public async Task<IActionResult> GetProducts()
{
    var products = await _dbContext.Products.ToListAsync();
    return View(products);
}

এখানে, ToListAsync() একটি অ্যাসিঙ্ক্রোনাস মেথড যা ডাটাবেস থেকে প্রোডাক্টের তালিকা আনার জন্য ব্যবহৃত হয়েছে। await এর মাধ্যমে এটি অপেক্ষা করে যে ডাটাবেস অপারেশনটি সম্পন্ন হবে।

৩.২. Async/Await ব্যবহার করে HTTP রিকোয়েস্ট করা

ASP.Net Core এ, আপনি HTTP রিকোয়েস্টের জন্যও অ্যাসিঙ্ক্রোনাস মেথড ব্যবহার করতে পারেন। উদাহরণস্বরূপ, একটি অন্য API থেকে ডেটা আনতে।

public async Task<IActionResult> GetWeather()
{
    HttpResponseMessage response = await _httpClient.GetAsync("https://api.weather.com/current");
    string weatherData = await response.Content.ReadAsStringAsync();
    return Content(weatherData);
}

এখানে, GetAsync এবং ReadAsStringAsync মেথড দুটি অ্যাসিঙ্ক্রোনাস। await ব্যবহার করে তাদের এক্সিকিউশন সম্পন্ন হওয়া পর্যন্ত অপেক্ষা করা হয়।

৩.৩. Blazor এ Async/Await ব্যবহার

Blazor কম্পোনেন্টে অ্যাসিঙ্ক্রোনাস কোড লেখা অত্যন্ত সাধারণ। আপনি OnInitializedAsync() বা OnAfterRenderAsync() এর মতো বিল্ট-ইন অ্যাসিঙ্ক্রোনাস লাইফসাইকেল মেথড ব্যবহার করতে পারেন।

@page "/weather"

<h3>Weather Info</h3>

@if (weatherData != null)
{
    <p>@weatherData</p>
}

@code {
    private string weatherData;

    protected override async Task OnInitializedAsync()
    {
        weatherData = await GetWeatherData();
    }

    private async Task<string> GetWeatherData()
    {
        HttpResponseMessage response = await Http.GetAsync("https://api.weather.com/current");
        return await response.Content.ReadAsStringAsync();
    }
}

এখানে, OnInitializedAsync() একটি অ্যাসিঙ্ক্রোনাস মেথড যা কম্পোনেন্ট ইনিশিয়ালাইজ হওয়ার সময় GetWeatherData() মেথডকে কল করে।


৪. Async/Await এর সুবিধা এবং ব্যবহার

৪.১. বহু কাজ একসাথে সম্পাদন

Asynchronous programming ক্লায়েন্ট এবং সার্ভারের মধ্যে দীর্ঘ সময় নেবার মতো কাজ (যেমন ডাটাবেস কুয়েরি বা HTTP রিকোয়েস্ট) সম্পাদন করতে সক্ষম করে। এটি অন্যান্য কাজগুলোকে প্রভাবিত না করে চলতে থাকতে সাহায্য করে।

৪.২. কর্মক্ষমতা বৃদ্ধি

Aysnc/Await ব্যবহার করলে অ্যাপ্লিকেশনের কর্মক্ষমতা বৃদ্ধি পায় কারণ এটি I/O ব্লকিং অপারেশনের সময় CPU-কে অন্য কাজ করতে দেয়।

৪.৩. ইউজার ইন্টারফেসের সাড়া বৃদ্ধি

একটি অ্যাসিঙ্ক্রোনাস রিকোয়েস্টের মাধ্যমে আপনি ইউজার ইন্টারফেসের সাড়া দ্রুত পাবেন, কারণ অ্যাসিঙ্ক্রোনাস অপারেশন UI থ্রেড ব্লক করে না।

৪.৪. সার্ভারের চাপ কমানো

অ্যাসিঙ্ক্রোনাস রিকোয়েস্ট সার্ভারের মাল্টিপল থ্রেড ব্যবস্থাপনা উন্নত করতে সাহায্য করে এবং একই সময়ে অনেক রিকোয়েস্ট প্রোসেস করা সম্ভব হয়, যা সার্ভারের চাপ কমাতে সাহায্য করে।


৫. প্রতিকূলতা এবং সাবধানতা

  • Error Handling: অ্যাসিঙ্ক্রোনাস অপারেশনগুলির ক্ষেত্রে আপনি সঠিকভাবে try-catch ব্লক ব্যবহার করতে হবে যাতে অপারেশনটি ব্যর্থ হলে সঠিকভাবে এর ত্রুটি ধরা যায়।
  • Performance Overhead: ছোট ছোট অ্যাসিঙ্ক্রোনাস অপারেশনগুলির ক্ষেত্রে অতিরিক্ত প্রক্রিয়া এবং মেমরি ব্যবহার হতে পারে।
  • Deadlocks: অ্যাসিঙ্ক্রোনাস অপারেশনে ভুলভাবে ConfigureAwait(false) ব্যবহার করলে ডেডলক ঘটতে পারে।

সারাংশ

ASP.Net Core এ Async/Await ব্যবহার করে আপনি অ্যাপ্লিকেশনের কর্মক্ষমতা বাড়াতে এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে পারেন। ডাটাবেস অপারেশন, HTTP রিকোয়েস্ট এবং অন্যান্য I/O ভিত্তিক কাজ অ্যাসিঙ্ক্রোনাসভাবে সম্পাদিত হলে অ্যাপ্লিকেশন দ্রুত রেসপন্স দেয় এবং সার্ভারের উপর কম চাপ পড়ে।

Content added By
Promotion